package cn.iocoder.yudao.module.system.service.goal;

import cn.iocoder.yudao.module.system.controller.admin.goal.vo.StudentMajorGroupGoalCreateReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.goal.StudentMajorGroupGoalDO;

import java.util.Collection;
import java.util.List;

/**
 * 学生目标专业组 Service 接口
 *
 * @author 芋道源码
 */
public interface StudentMajorGroupGoalService {

    /**
     * 创建学生目标专业组
     *
     * @param createReqVO 创建信息
     * @param userId      用户ID
     * @return 编号
     */
    Long createMajorGroupGoal(StudentMajorGroupGoalCreateReqVO createReqVO, Long userId);

    /**
     * 删除学生目标专业组
     *
     * @param id 编号
     * @param userId 用户ID
     */
    void deleteMajorGroupGoal(Long id, Long userId);

    /**
     * 获得学生目标专业组列表
     *
     * @param userId 用户ID
     * @return 学生目标专业组列表
     */
    List<StudentMajorGroupGoalDO> getMajorGroupGoalList(Long userId);

    /**
     * 获得指定用户的目标专业组列表
     *
     * @param userIds 用户ID集合
     * @return 学生目标专业组列表
     */
    List<StudentMajorGroupGoalDO> getMajorGroupGoalList(Collection<Long> userIds);

    /**
     * 检查是否已添加为目标
     *
     * @param userId 用户ID
     * @param recruitCode 招生代码
     * @param majorGroup 专业组
     * @param year 年份
     * @return 是否存在
     */
    boolean isMajorGroupGoalExists(Long userId, String recruitCode, String majorGroup, Integer year);

    /**
     * 更新学生目标专业组排序
     *
     * @param id 编号
     * @param sort 排序值
     * @param userId 用户ID
     */
    void updateMajorGroupGoalSort(Long id, Integer sort, Long userId);
}
